import os
import sys
import tempfile
import requests

# 添加项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# 从info_processor导入处理函数
from video_processors.info_processor import get_video_info_processor

# 测试视频URL（使用公共示例视频）
VIDEO_URL = "https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"

# 下载测试视频到临时文件
def download_test_video():
    try:
        print(f"正在下载测试视频: {VIDEO_URL}")
        response = requests.get(VIDEO_URL, stream=True)
        response.raise_for_status()
        
        # 创建临时文件
        temp_dir = tempfile.gettempdir()
        video_path = os.path.join(temp_dir, "test_video.mp4")
        
        with open(video_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                if chunk:
                    f.write(chunk)
        
        print(f"视频下载完成: {video_path}")
        return video_path
    except Exception as e:
        print(f"下载视频失败: {str(e)}")
        return None

# 测试info_processor函数
def test_info_processor():
    print("\n=== 直接测试视频信息处理器 ===")
    
    # 下载测试视频
    video_path = download_test_video()
    if not video_path or not os.path.exists(video_path):
        print("无法获取测试视频，使用本地视频文件进行测试...")
        # 尝试使用本地视频文件作为备选
        # 用户可以在这里修改为自己本地的视频文件路径
        video_path = "sample_video.mp4"
        if not os.path.exists(video_path):
            print(f"错误: 未找到测试视频文件 '{video_path}'")
            print("请确保有可访问的视频文件用于测试。")
            return
    
    try:
        print(f"\n正在处理视频文件: {video_path}")
        print("调用get_video_info_processor函数...")
        
        # 直接调用处理函数
        video_info = get_video_info_processor(video_path)
        
        # 打印结果
        print("\n视频信息获取成功！")
        print("\n视频信息详情:")
        print(f"- 时长: {video_info['duration']} 秒")
        print(f"- 尺寸: {video_info['size']}")
        print(f"- 帧率: {video_info['fps']}")
        print(f"- 音频编解码器: {video_info['audio_codec']}")
        print(f"- 视频编解码器: {video_info['video_codec']}")
        
    except Exception as e:
        print(f"\n处理视频时发生错误: {str(e)}")
    finally:
        # 清理临时文件（如果是下载的文件）
        if video_path and video_path.endswith("test_video.mp4") and os.path.exists(video_path):
            try:
                os.remove(video_path)
                print(f"\n已清理临时测试文件")
            except:
                pass

# 运行测试
if __name__ == "__main__":
    test_info_processor()
    print("\n测试完成。")